<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // console.log(fn);//undefined
        // console.log(fn(1,2));//undefined(1,2)
        // //变量提升--只是声明，后赋值
        // var fn=function (n,m){
        //     return n+m;
        // }
        // console.log(fn(3,4));

        // fn--und  sum--函数
        // sum();//2
        // fn();//报错
        // var fn=function(){
        //     console.log(1);
        // };

        // function sum(){
        //     console.log(2);
        // }

        // fn();
        // sum();

        //obj--undefined
        // console.log(obj.f1);//报错
        // var obj={
        //     f1:function(){
        //       console.log(1)
        //     }
        // }

        //return 下面的代码可以做变量提升，但不会执行
        //return 后面紧跟的代码不会做变量提升
        // function fn(){
        //     console.log(a);//undefined
        //     return function f1(){
        //     }
        //     var a=3;
        // }
        // fn();


        // function fn(){
        //     console.log(f2);//函数
        //     console.log(f1);//报错
        //     return function f1(){
        //     }
        //     function f2(){
        //         console.log("f2")
        //     }
        // }
        // fn();

        //多个声明，变量提升的时候，声明1次就可以了
        // var num=2;
        // var num=3;
        // console.log(num);//3

        //相当于
        // var num;
        // num=2;
        // num=3;
        // console.log(num);//3

       //变量提升：声明1次，赋值多次（后面把前面覆盖）
       //  fn--0x001--0x002--0x003
        // console.log(fn)//函数3
        // function fn(){//0x001
        //   console.log(1);
        // }
        // function fn(){//0x002
        //   console.log(2);
        // }
        // function fn(){//0x003
        //   console.log(3);
        // }

         //如果多次赋值，后面覆盖前面的；如果有多次声明，声明1次
        // console.log(fn);//函数
        // function fn(){    
        //     console.log(1)
        // }
        // var fn=2;       
        // console.log(fn); //2

       //num--undefined
        // console.log(num);//undefined
        // var num = 1;
        // console.log(num);//1
        // var num = 2;
        // console.log(num);//2

       //fn--1--2--3--4--100
        fn();//4
        function fn(){
            console.log(1);
        }
        function fn(){
            console.log(2);   
        }
        fn();//4
        function fn(){
            console.log(3);
        }
        fn=100;
        function fn(){
            console.log(4);   
        }
        fn();

        // fn();//4
        // fn();//4
        // fn=100;
        // fn();//100()---报错

    </script>
</body>
</html>